package cndw.core.dispatch;

import java.io.Serializable;

import cndw.core.util.annotation.NotNull;

/**
 * 客户端的请求
 * 
 * @author zuojie.x
 */
 public interface Request {
	
	/**
	 * 在socket连接后会创建Session,这个时候还无法得到玩家ID,应该在用户登陆成功并获取到playerId后将值设置到Session.<br/>
	 * 设置方法:
	 * <br/>
	 * 此方法等同于调用{@code getSession().getUserId();}
	 * @return 用户的ID,在没有设置用户ID时,返回null
	 */
	String getPlayerId();
	
	/**
	 * @return {@link Session}
	 */
	@NotNull
	Session getSession();
	
	/**
	 * @return 客户端地址IP
	 */
	@NotNull
	String getHostAddress();
	
	/**
	 * @return 请求的控制器ID
	 */
	int getActionId();

	/**
	 * @return 客户端请求的参数列表
	 */
	@NotNull
	Serializable[] getParams();
	
	/**
	 * @return sign
	 */
	String getSign();
}
